COBS: A Background

COBS is a field trial comparing biofuel systems

First, let’s confirm that we have the required tools for asking questions of the NCBI database. To do this we will use the NCBI API: Entrez Direct and install it via the UNIX command line.

pwd
cd ~
perl -MNet::FTP -e \
  '$ftp = new Net::FTP("ftp.ncbi.nlm.nih.gov", Passive => 1);
   $ftp->login; $ftp->binary;
   $ftp->get("/entrez/entrezdirect/edirect.zip");'
unzip -u -q edirect.zip
rm edirect.zip
export PATH=$PATH:$HOME/edirect
./edirect/setup.sh

Let’s take a look to confirm that it was installed in the home directory:

cd ~
ls

Now that we have the tools, what will we use them for? COBS is a unique dataset that includes many metagenomes from soil aggregates. Many functions in ecosystems are microbially mediated and catalyzed by enzymes. In this study, funded by the DOE, we are interested in carnon cycleing and therefore the enyzmes associated with that funciton. Our collaborator (Kirsten Hofmockel) has identified a few enzymes of interest for our system. The list of enzymes is contained in a text file: ec_numbers.txt Let’s navigate to that directory and take a look:

cd ~/Documents/COBS_CAZY
cat ec_numbers.txt

We now have a list of enzymes of interest, let’s use those NCBI tools to find bacterial sequences associated with those enzymes by creating a python script:

import sys
from Bio import Entrez, SeqIO

Entrez.email = 'jflater@iastate.edu'

# First, find entries that contain the E.C. number
ec_num = sys.argv[1].strip()
#print ec_num
#print 'E.C. '+ ec_num
esearch_handle = Entrez.esearch(db='nucleotide', term='EC '+ec_num)
# When term='E.C. we get zero results, however, if term=EC it works
entries = Entrez.read(esearch_handle)
esearch_handle.close()

# Second, fetch these entries
efetch_handle = Entrez.efetch(db='nucleotide', id=entries['IdList'], rettype='gb', retmode='xml') 
records = Entrez.parse(efetch_handle)

# Now, we go through the records and look for a feature with name 'EC_number'
for record in records:
      for feature in record['GBSeq_feature-table']:
          for subfeature in feature['GBFeature_quals']:
              if (subfeature['GBQualifier_name'] == 'EC_number'   and
                subfeature['GBQualifier_value'] == ec_num):

                    # If we found it, we extract the seq's start and end
                    accession = record['GBSeq_primary-accession']
                    interval = feature['GBFeature_intervals'][0]
                    interval_start = interval['GBInterval_from']
                    interval_end = interval['GBInterval_to']
                    location = feature['GBFeature_location']
                    if location.startswith('complement'):
                        strand = 2
                    else:
                        strand = 1

                    # Now we fetch the nucleotide sequence
                    handle = Entrez.efetch(db="nucleotide", id=accession,
                                           rettype="fasta", strand=strand,
                                           seq_start = interval_start,
                                           seq_stop = interval_end)
                    seq = SeqIO.read(handle, "fasta")

                    print('>GenBank Accession:{}'.format(accession))
                    print(seq.seq)
efetch_handle.close()

Now let’s apply that script to our list of EC #’s by using the command line:

while read line;     
  do python scripts/nucl_from_ec.py $line > "$line".txt;    
  done < ec_numbers.txt
cd Documents/COBS_CAZY
head 3.2.1.37.txt 

This command line script will go through our list of EC numbers and retrieve the associated nucleotide sequences and output a file for each EC # with those sequences in fasta format. ____ Python script wasn’t working. So we are using downloaded protien sequences to blast against NCBI Let’s try an online server mkdir temp_cazy _____ To use hpcc: Lot’s of disc space, temporary unlimited (3 months)

ssh *****@hpcc.msu.edu password:

We are at the gateway, now connect to development node (dev-intell-16, it’s newer)

ssh dv-intell-16
is home directory, only 50 g and Jin can’t see it. cd /mnt/scratch/***** empty big directory, temp unlimeted good for downloading big files for a short time now lets download db to that ftp://ftp.ncbi.nlm.nih.gov refseq_protien.10.tar.gz.md5 and *.gz is what we want to put on HPCC

In HPC: move out of dev intel…everyone is using it. There are many more computers to choose from begind that…called nodes We want to work in a node, we need to submit a job by using qsub

[*****@dev-intel16 ~]$ cd /mnt/scratch/***** [*****@dev-intel16 *****]$ ls [*****@dev-intel16 *****]$ mkdir COBS_CAZY [*****@dev-intel16 *****]$ cd COBS_CAZY/ [*****@dev-intel16 COBS_CAZY]$ emacs download.refseq.qsub

[1]+ Stopped emacs download.refseq.qsub [*****@dev-intel16 COBS_CAZY]$ ls download.refseq.qsub download.refseq.qsub~ [*****@dev-intel16 COBS_CAZY]$ rm *~ [*****@dev-intel16 COBS_CAZY]$ ls download.refseq.qsub [*****@dev-intel16 COBS_CAZY]$ qsub download.refseq.qsub 37523906.mgr-04.i [*****@dev-intel16 COBS_CAZY]$ ls download.refseq.qsub [*****@dev-intel16 COBS_CAZY]$

.o is output, .e is error

S = Q in line S = R running S = C complete

Check if everything downloaded correctly by using md5(it tells us if downloaded correctly) Once all is downlaoded, unzip

Then ready to run blastp (files in fasta) clone the github repository # note change spellin on protein for emacs

module load git (to upload repository) git clone url once repository is uploaded then blastp

submit blastp: qsub blastp.qsub

2016_12_02:09:06 AM, Noticed that we did not qsub blastp for EC *.86, let’s make that script and submit the job.

ssh *****@hpcc.msu.edu
password:
ssh dev-intel16
cd /mnt/scratch/*****/COBS_CAZY
ls
LS0tCnRpdGxlOiAiQ09CU19DQVpZIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKcm9vdDogLi4vLi4vLi4vCi0tLQohW10oaW1hZ2VzL0NPQlNQSUMucG5nKQotLS0tLS0KI0NPQlM6IEEgQmFja2dyb3VuZAoKQ09CUyBpcyBhIGZpZWxkIHRyaWFsIGNvbXBhcmluZyBiaW9mdWVsIHN5c3RlbXMKLS0tLS0tCkZpcnN0LCBsZXQncyBjb25maXJtIHRoYXQgd2UgaGF2ZSB0aGUgcmVxdWlyZWQgdG9vbHMgZm9yIGFza2luZyBxdWVzdGlvbnMgb2YgdGhlIE5DQkkgZGF0YWJhc2UuIFRvIGRvIHRoaXMgd2Ugd2lsbCB1c2UgdGhlIE5DQkkgQVBJOiBFbnRyZXogRGlyZWN0IGFuZCBpbnN0YWxsIGl0IHZpYSB0aGUgVU5JWCBjb21tYW5kIGxpbmUuIApgYGB7YmFzaCwgZXZhbD1GQUxTRX0KcHdkCmNkIH4KcGVybCAtTU5ldDo6RlRQIC1lIFwKICAnJGZ0cCA9IG5ldyBOZXQ6OkZUUCgiZnRwLm5jYmkubmxtLm5paC5nb3YiLCBQYXNzaXZlID0+IDEpOwogICAkZnRwLT5sb2dpbjsgJGZ0cC0+YmluYXJ5OwogICAkZnRwLT5nZXQoIi9lbnRyZXovZW50cmV6ZGlyZWN0L2VkaXJlY3QuemlwIik7Jwp1bnppcCAtdSAtcSBlZGlyZWN0LnppcApybSBlZGlyZWN0LnppcApleHBvcnQgUEFUSD0kUEFUSDokSE9NRS9lZGlyZWN0Ci4vZWRpcmVjdC9zZXR1cC5zaApgYGAKTGV0J3MgdGFrZSBhIGxvb2sgdG8gY29uZmlybSB0aGF0IGl0IHdhcyBpbnN0YWxsZWQgaW4gdGhlIGhvbWUgZGlyZWN0b3J5OgpgYGB7YmFzaH0KY2QgfgpscwpgYGAKTm93IHRoYXQgd2UgaGF2ZSB0aGUgdG9vbHMsIHdoYXQgd2lsbCB3ZSB1c2UgdGhlbSBmb3I/IENPQlMgaXMgYSB1bmlxdWUgZGF0YXNldCB0aGF0IGluY2x1ZGVzIG1hbnkgbWV0YWdlbm9tZXMgZnJvbSBzb2lsIGFnZ3JlZ2F0ZXMuIE1hbnkgZnVuY3Rpb25zIGluIGVjb3N5c3RlbXMgYXJlIG1pY3JvYmlhbGx5IG1lZGlhdGVkIGFuZCBjYXRhbHl6ZWQgYnkgZW56eW1lcy4gSW4gdGhpcyBzdHVkeSwgZnVuZGVkIGJ5IHRoZSBET0UsIHdlIGFyZSBpbnRlcmVzdGVkIGluIGNhcm5vbiBjeWNsZWluZyBhbmQgdGhlcmVmb3JlIHRoZSBlbnl6bWVzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGZ1bmNpdG9uLiBPdXIgY29sbGFib3JhdG9yIChLaXJzdGVuIEhvZm1vY2tlbCkgaGFzIGlkZW50aWZpZWQgYSBmZXcgZW56eW1lcyBvZiBpbnRlcmVzdCBmb3Igb3VyIHN5c3RlbS4gVGhlIGxpc3Qgb2YgZW56eW1lcyBpcyBjb250YWluZWQgaW4gYSB0ZXh0IGZpbGU6IGVjX251bWJlcnMudHh0CkxldCdzIG5hdmlnYXRlIHRvIHRoYXQgZGlyZWN0b3J5IGFuZCB0YWtlIGEgbG9vazoKYGBge2Jhc2h9CmNkIH4vRG9jdW1lbnRzL0NPQlNfQ0FaWQpjYXQgZWNfbnVtYmVycy50eHQKYGBgCldlIG5vdyBoYXZlIGEgbGlzdCBvZiBlbnp5bWVzIG9mIGludGVyZXN0LCBsZXQncyB1c2UgdGhvc2UgTkNCSSB0b29scyB0byBmaW5kIGJhY3RlcmlhbCBzZXF1ZW5jZXMgYXNzb2NpYXRlZCB3aXRoIHRob3NlIGVuenltZXMgYnkgY3JlYXRpbmcgYSBweXRob24gc2NyaXB0OiAgCmBgYHtweXRob24sIGV2YWw9RkFMU0V9CmltcG9ydCBzeXMKZnJvbSBCaW8gaW1wb3J0IEVudHJleiwgU2VxSU8KCkVudHJlei5lbWFpbCA9ICdqZmxhdGVyQGlhc3RhdGUuZWR1JwoKIyBGaXJzdCwgZmluZCBlbnRyaWVzIHRoYXQgY29udGFpbiB0aGUgRS5DLiBudW1iZXIKZWNfbnVtID0gc3lzLmFyZ3ZbMV0uc3RyaXAoKQojcHJpbnQgZWNfbnVtCiNwcmludCAnRS5DLiAnKyBlY19udW0KZXNlYXJjaF9oYW5kbGUgPSBFbnRyZXouZXNlYXJjaChkYj0nbnVjbGVvdGlkZScsIHRlcm09J0VDICcrZWNfbnVtKQojIFdoZW4gdGVybT0nRS5DLiB3ZSBnZXQgemVybyByZXN1bHRzLCBob3dldmVyLCBpZiB0ZXJtPUVDIGl0IHdvcmtzCmVudHJpZXMgPSBFbnRyZXoucmVhZChlc2VhcmNoX2hhbmRsZSkKZXNlYXJjaF9oYW5kbGUuY2xvc2UoKQoKIyBTZWNvbmQsIGZldGNoIHRoZXNlIGVudHJpZXMKZWZldGNoX2hhbmRsZSA9IEVudHJlei5lZmV0Y2goZGI9J251Y2xlb3RpZGUnLCBpZD1lbnRyaWVzWydJZExpc3QnXSwgcmV0dHlwZT0nZ2InLCByZXRtb2RlPSd4bWwnKSAKcmVjb3JkcyA9IEVudHJlei5wYXJzZShlZmV0Y2hfaGFuZGxlKQoKIyBOb3csIHdlIGdvIHRocm91Z2ggdGhlIHJlY29yZHMgYW5kIGxvb2sgZm9yIGEgZmVhdHVyZSB3aXRoIG5hbWUgJ0VDX251bWJlcicKZm9yIHJlY29yZCBpbiByZWNvcmRzOgogICAgICBmb3IgZmVhdHVyZSBpbiByZWNvcmRbJ0dCU2VxX2ZlYXR1cmUtdGFibGUnXToKICAgICAgICAgIGZvciBzdWJmZWF0dXJlIGluIGZlYXR1cmVbJ0dCRmVhdHVyZV9xdWFscyddOgogICAgICAgICAgICAgIGlmIChzdWJmZWF0dXJlWydHQlF1YWxpZmllcl9uYW1lJ10gPT0gJ0VDX251bWJlcicgICBhbmQKICAgICAgICAgICAgICAgIHN1YmZlYXR1cmVbJ0dCUXVhbGlmaWVyX3ZhbHVlJ10gPT0gZWNfbnVtKToKCiAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBmb3VuZCBpdCwgd2UgZXh0cmFjdCB0aGUgc2VxJ3Mgc3RhcnQgYW5kIGVuZAogICAgICAgICAgICAgICAgICAgIGFjY2Vzc2lvbiA9IHJlY29yZFsnR0JTZXFfcHJpbWFyeS1hY2Nlc3Npb24nXQogICAgICAgICAgICAgICAgICAgIGludGVydmFsID0gZmVhdHVyZVsnR0JGZWF0dXJlX2ludGVydmFscyddWzBdCiAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWxfc3RhcnQgPSBpbnRlcnZhbFsnR0JJbnRlcnZhbF9mcm9tJ10KICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbF9lbmQgPSBpbnRlcnZhbFsnR0JJbnRlcnZhbF90byddCiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBmZWF0dXJlWydHQkZlYXR1cmVfbG9jYXRpb24nXQogICAgICAgICAgICAgICAgICAgIGlmIGxvY2F0aW9uLnN0YXJ0c3dpdGgoJ2NvbXBsZW1lbnQnKToKICAgICAgICAgICAgICAgICAgICAgICAgc3RyYW5kID0gMgogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmFuZCA9IDEKCiAgICAgICAgICAgICAgICAgICAgIyBOb3cgd2UgZmV0Y2ggdGhlIG51Y2xlb3RpZGUgc2VxdWVuY2UKICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSBFbnRyZXouZWZldGNoKGRiPSJudWNsZW90aWRlIiwgaWQ9YWNjZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dHlwZT0iZmFzdGEiLCBzdHJhbmQ9c3RyYW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxX3N0YXJ0ID0gaW50ZXJ2YWxfc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXFfc3RvcCA9IGludGVydmFsX2VuZCkKICAgICAgICAgICAgICAgICAgICBzZXEgPSBTZXFJTy5yZWFkKGhhbmRsZSwgImZhc3RhIikKCiAgICAgICAgICAgICAgICAgICAgcHJpbnQoJz5HZW5CYW5rIEFjY2Vzc2lvbjp7fScuZm9ybWF0KGFjY2Vzc2lvbikpCiAgICAgICAgICAgICAgICAgICAgcHJpbnQoc2VxLnNlcSkKZWZldGNoX2hhbmRsZS5jbG9zZSgpCgpgYGAKTm93IGxldCdzIGFwcGx5IHRoYXQgc2NyaXB0IHRvIG91ciBsaXN0IG9mIEVDICMncyBieSB1c2luZyB0aGUgY29tbWFuZCBsaW5lOgpgYGB7YmFzaCwgZXZhbD1GQUxTRX0Kd2hpbGUgcmVhZCBsaW5lOyAgICAgCiAgZG8gcHl0aG9uIHNjcmlwdHMvbnVjbF9mcm9tX2VjLnB5ICRsaW5lID4gIiRsaW5lIi50eHQ7ICAgIAogIGRvbmUgPCBlY19udW1iZXJzLnR4dApgYGAKCmBgYHtiYXNofQpjZCBEb2N1bWVudHMvQ09CU19DQVpZCmhlYWQgMy4yLjEuMzcudHh0IApgYGAKCgoKCgpUaGlzIGNvbW1hbmQgbGluZSBzY3JpcHQgd2lsbCBnbyB0aHJvdWdoIG91ciBsaXN0IG9mIEVDIG51bWJlcnMgYW5kIHJldHJpZXZlIHRoZSBhc3NvY2lhdGVkIG51Y2xlb3RpZGUgc2VxdWVuY2VzIGFuZCBvdXRwdXQgYSBmaWxlIGZvciBlYWNoIEVDICMgd2l0aCB0aG9zZSBzZXF1ZW5jZXMgaW4gZmFzdGEgZm9ybWF0LiAKX19fXwpQeXRob24gc2NyaXB0IHdhc24ndCB3b3JraW5nLiBTbyB3ZSBhcmUgdXNpbmcgZG93bmxvYWRlZCBwcm90aWVuIHNlcXVlbmNlcyB0byBibGFzdCBhZ2FpbnN0IE5DQkkgCkxldCdzIHRyeSBhbiBvbmxpbmUgc2VydmVyIApta2RpciB0ZW1wX2NhenkKX19fX18KVG8gdXNlIGhwY2M6CkxvdCdzIG9mIGRpc2Mgc3BhY2UsIHRlbXBvcmFyeSB1bmxpbWl0ZWQgKDMgbW9udGhzKQoKc3NoICoqKioqQGhwY2MubXN1LmVkdQpwYXNzd29yZDoKCldlIGFyZSBhdCB0aGUgZ2F0ZXdheSwgbm93IGNvbm5lY3QgdG8gZGV2ZWxvcG1lbnQgbm9kZSAoZGV2LWludGVsbC0xNiwgaXQncyBuZXdlcikKCnNzaCBkdi1pbnRlbGwtMTYKfiBpcyBob21lIGRpcmVjdG9yeSwgb25seSA1MCBnIGFuZCBKaW4gY2FuJ3Qgc2VlIGl0LgpjZCAvbW50L3NjcmF0Y2gvKioqKioKZW1wdHkgYmlnIGRpcmVjdG9yeSwgdGVtcCB1bmxpbWV0ZWQgZ29vZCBmb3IgZG93bmxvYWRpbmcgYmlnIGZpbGVzIGZvciBhIHNob3J0IHRpbWUKbm93IGxldHMgZG93bmxvYWQgZGIgdG8gdGhhdCAgZnRwOi8vZnRwLm5jYmkubmxtLm5paC5nb3YKcmVmc2VxX3Byb3RpZW4uMTAudGFyLmd6Lm1kNSBhbmQgKi5neiBpcyB3aGF0IHdlIHdhbnQgdG8gcHV0IG9uIEhQQ0MKCkluIEhQQzogbW92ZSBvdXQgb2YgZGV2IGludGVsLi4uZXZlcnlvbmUgaXMgdXNpbmcgaXQuIFRoZXJlIGFyZSBtYW55IG1vcmUgY29tcHV0ZXJzIHRvIGNob29zZSBmcm9tIGJlZ2luZCB0aGF0Li4uY2FsbGVkIG5vZGVzCldlIHdhbnQgdG8gd29yayBpbiBhIG5vZGUsIHdlIG5lZWQgdG8gc3VibWl0IGEgam9iIGJ5IHVzaW5nIHFzdWIKYGBge2Jhc2gsIGV2YWw9RkFMU0V9CgpgYGAKClsqKioqKkBkZXYtaW50ZWwxNiB+XSQgY2QgL21udC9zY3JhdGNoLyoqKioqClsqKioqKkBkZXYtaW50ZWwxNiAqKioqKl0kIGxzClsqKioqKkBkZXYtaW50ZWwxNiAqKioqKl0kIG1rZGlyIENPQlNfQ0FaWQpbKioqKipAZGV2LWludGVsMTYgKioqKipdJCBjZCBDT0JTX0NBWlkvClsqKioqKkBkZXYtaW50ZWwxNiBDT0JTX0NBWlldJCBlbWFjcyBkb3dubG9hZC5yZWZzZXEucXN1YgoKWzFdKyAgU3RvcHBlZCAgICAgICAgICAgICAgICAgZW1hY3MgZG93bmxvYWQucmVmc2VxLnFzdWIKWyoqKioqQGRldi1pbnRlbDE2IENPQlNfQ0FaWV0kIGxzCmRvd25sb2FkLnJlZnNlcS5xc3ViICBkb3dubG9hZC5yZWZzZXEucXN1Yn4KWyoqKioqQGRldi1pbnRlbDE2IENPQlNfQ0FaWV0kIHJtICp+ClsqKioqKkBkZXYtaW50ZWwxNiBDT0JTX0NBWlldJCBscwpkb3dubG9hZC5yZWZzZXEucXN1YgpbKioqKipAZGV2LWludGVsMTYgQ09CU19DQVpZXSQgcXN1YiBkb3dubG9hZC5yZWZzZXEucXN1YgozNzUyMzkwNi5tZ3ItMDQuaQpbKioqKipAZGV2LWludGVsMTYgQ09CU19DQVpZXSQgbHMKZG93bmxvYWQucmVmc2VxLnFzdWIKWyoqKioqQGRldi1pbnRlbDE2IENPQlNfQ0FaWV0kCgoubyBpcyBvdXRwdXQsIC5lIGlzIGVycm9yCgpTID0gUSBpbiBsaW5lClMgPSBSIHJ1bm5pbmcKUyA9IEMgY29tcGxldGUKCkNoZWNrIGlmIGV2ZXJ5dGhpbmcgZG93bmxvYWRlZCBjb3JyZWN0bHkgYnkgdXNpbmcgbWQ1KGl0IHRlbGxzIHVzIGlmIGRvd25sb2FkZWQgY29ycmVjdGx5KQpPbmNlIGFsbCBpcyBkb3dubGFvZGVkLCB1bnppcAoKCgpUaGVuIHJlYWR5IHRvIHJ1biBibGFzdHAgKGZpbGVzIGluIGZhc3RhKSBjbG9uZSB0aGUgZ2l0aHViIHJlcG9zaXRvcnkKIyBub3RlIGNoYW5nZSBzcGVsbGluIG9uIHByb3RlaW4gZm9yIGVtYWNzCgptb2R1bGUgbG9hZCBnaXQgKHRvIHVwbG9hZCByZXBvc2l0b3J5KQpnaXQgY2xvbmUgdXJsCm9uY2UgcmVwb3NpdG9yeSBpcyB1cGxvYWRlZCB0aGVuIGJsYXN0cAoKc3VibWl0IGJsYXN0cDogcXN1YiBibGFzdHAucXN1YgoKIzIwMTZfMTJfMDI6MDk6MDYgQU0sIE5vdGljZWQgdGhhdCB3ZSBkaWQgbm90IHFzdWIgYmxhc3RwIGZvciBFQyAqLjg2LCBsZXQncyBtYWtlIHRoYXQgc2NyaXB0IGFuZCBzdWJtaXQgdGhlIGpvYi4gCmBgYHtiYXNoLCBldmFsPUZBTFNFfQpzc2ggKioqKipAaHBjYy5tc3UuZWR1CnBhc3N3b3JkOgpzc2ggZGV2LWludGVsMTYKY2QgL21udC9zY3JhdGNoLyoqKioqL0NPQlNfQ0FaWQpscwoKYGBgCgo=